[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')]
param()
BeforeAll {
    $path = $PSCommandPath
    $src = (Split-Path -Parent -Path $path) -ireplace '[\\/]tests[\\/]unit', '/src/'
    Get-ChildItem "$($src)/*.ps1" -Recurse | Resolve-Path | ForEach-Object { . $_ }
    Import-LocalizedData -BindingVariable PodeLocale -BaseDirectory (Join-Path -Path $src -ChildPath 'Locales') -FileName 'Pode'
}
Describe 'Get-PodeContentType' {
    Context 'No extension supplied' {
        It 'Return the default type for empty' {
            Get-PodeContentType -Extension ([string]::Empty) | Should -Be 'text/plain'
        }

        It 'Return the default type for null' {
            Get-PodeContentType -Extension $null | Should -Be 'text/plain'
        }

        It 'Return the default type for empty when DefaultIsNull' {
            Get-PodeContentType -Extension ([string]::Empty) -DefaultIsNull | Should -Be $null
        }

        It 'Return the default type for null when DefaultIsNull' {
            Get-PodeContentType -Extension $null -DefaultIsNull | Should -Be $null
        }
    }

    Context 'Extension with no period' {
        It 'Add a period and return type' {
            Get-PodeContentType -Extension 'mp3' | Should -Be 'audio/mpeg'
        }

        It 'Add a period and return default' {
            Get-PodeContentType -Extension '<random>' | Should -Be 'text/plain'
        }
    }

    Context 'Extension with period' {
        It 'Add a period and return type' {
            Get-PodeContentType -Extension '.mp3' | Should -Be 'audio/mpeg'
        }

        It 'Add a period and return default' {
            Get-PodeContentType -Extension '.<random>' | Should -Be 'text/plain'
        }
    }

    Describe 'All Extension Loop' {
        BeforeAll {
            $types = @{
                '.323'                    = 'text/h323'
                '.3g2'                    = 'video/3gpp2'
                '.3gp'                    = 'video/3gpp'
                '.3gp2'                   = 'video/3gpp2'
                '.3gpp'                   = 'video/3gpp'
                '.7z'                     = 'application/x-7z-compressed'
                '.aa'                     = 'audio/audible'
                '.aac'                    = 'audio/aac'
                '.aaf'                    = 'application/octet-stream'
                '.aax'                    = 'audio/vnd.audible.aax'
                '.ac3'                    = 'audio/ac3'
                '.aca'                    = 'application/octet-stream'
                '.accda'                  = 'application/msaccess.addin'
                '.accdb'                  = 'application/msaccess'
                '.accdc'                  = 'application/msaccess.cab'
                '.accde'                  = 'application/msaccess'
                '.accdr'                  = 'application/msaccess.runtime'
                '.accdt'                  = 'application/msaccess'
                '.accdw'                  = 'application/msaccess.webapplication'
                '.accft'                  = 'application/msaccess.ftemplate'
                '.acx'                    = 'application/internet-property-stream'
                '.addin'                  = 'application/xml'
                '.ade'                    = 'application/msaccess'
                '.adobebridge'            = 'application/x-bridge-url'
                '.adp'                    = 'application/msaccess'
                '.adt'                    = 'audio/vnd.dlna.adts'
                '.adts'                   = 'audio/aac'
                '.afm'                    = 'application/octet-stream'
                '.ai'                     = 'application/postscript'
                '.aif'                    = 'audio/aiff'
                '.aifc'                   = 'audio/aiff'
                '.aiff'                   = 'audio/aiff'
                '.air'                    = 'application/vnd.adobe.air-application-installer-package+zip'
                '.amc'                    = 'application/mpeg'
                '.anx'                    = 'application/annodex'
                '.apk'                    = 'application/vnd.android.package-archive'
                '.application'            = 'application/x-ms-application'
                '.art'                    = 'image/x-jg'
                '.asa'                    = 'application/xml'
                '.asax'                   = 'application/xml'
                '.ascx'                   = 'application/xml'
                '.asd'                    = 'application/octet-stream'
                '.asf'                    = 'video/x-ms-asf'
                '.ashx'                   = 'application/xml'
                '.asi'                    = 'application/octet-stream'
                '.asm'                    = 'text/plain'
                '.asmx'                   = 'application/xml'
                '.aspx'                   = 'application/xml'
                '.asr'                    = 'video/x-ms-asf'
                '.asx'                    = 'video/x-ms-asf'
                '.atom'                   = 'application/atom+xml'
                '.au'                     = 'audio/basic'
                '.avi'                    = 'video/x-msvideo'
                '.axa'                    = 'audio/annodex'
                '.axs'                    = 'application/olescript'
                '.axv'                    = 'video/annodex'
                '.bas'                    = 'text/plain'
                '.bcpio'                  = 'application/x-bcpio'
                '.bin'                    = 'application/octet-stream'
                '.bmp'                    = 'image/bmp'
                '.c'                      = 'text/plain'
                '.cab'                    = 'application/octet-stream'
                '.caf'                    = 'audio/x-caf'
                '.calx'                   = 'application/vnd.ms-office.calx'
                '.cat'                    = 'application/vnd.ms-pki.seccat'
                '.cc'                     = 'text/plain'
                '.cd'                     = 'text/plain'
                '.cdda'                   = 'audio/aiff'
                '.cdf'                    = 'application/x-cdf'
                '.cer'                    = 'application/x-x509-ca-cert'
                '.cfg'                    = 'text/plain'
                '.chm'                    = 'application/octet-stream'
                '.class'                  = 'application/x-java-applet'
                '.clp'                    = 'application/x-msclip'
                '.cmd'                    = 'text/plain'
                '.cmx'                    = 'image/x-cmx'
                '.cnf'                    = 'text/plain'
                '.cod'                    = 'image/cis-cod'
                '.config'                 = 'application/xml'
                '.contact'                = 'text/x-ms-contact'
                '.coverage'               = 'application/xml'
                '.cpio'                   = 'application/x-cpio'
                '.cpp'                    = 'text/plain'
                '.crd'                    = 'application/x-mscardfile'
                '.crl'                    = 'application/pkix-crl'
                '.crt'                    = 'application/x-x509-ca-cert'
                '.cs'                     = 'text/plain'
                '.csdproj'                = 'text/plain'
                '.csh'                    = 'application/x-csh'
                '.csproj'                 = 'text/plain'
                '.css'                    = 'text/css'
                '.csv'                    = 'text/csv'
                '.cur'                    = 'application/octet-stream'
                '.cxx'                    = 'text/plain'
                '.dat'                    = 'application/octet-stream'
                '.datasource'             = 'application/xml'
                '.dbproj'                 = 'text/plain'
                '.dcr'                    = 'application/x-director'
                '.def'                    = 'text/plain'
                '.deploy'                 = 'application/octet-stream'
                '.der'                    = 'application/x-x509-ca-cert'
                '.dgml'                   = 'application/xml'
                '.dib'                    = 'image/bmp'
                '.dif'                    = 'video/x-dv'
                '.dir'                    = 'application/x-director'
                '.disco'                  = 'application/xml'
                '.divx'                   = 'video/divx'
                '.dll'                    = 'application/x-msdownload'
                '.dll.config'             = 'application/xml'
                '.dlm'                    = 'text/dlm'
                '.doc'                    = 'application/msword'
                '.docm'                   = 'application/vnd.ms-word.document.macroEnabled.12'
                '.docx'                   = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
                '.dot'                    = 'application/msword'
                '.dotm'                   = 'application/vnd.ms-word.template.macroEnabled.12'
                '.dotx'                   = 'application/vnd.openxmlformats-officedocument.wordprocessingml.template'
                '.dsp'                    = 'application/octet-stream'
                '.dsw'                    = 'text/plain'
                '.dtd'                    = 'application/xml'
                '.dtsconfig'              = 'application/xml'
                '.dv'                     = 'video/x-dv'
                '.dvi'                    = 'application/x-dvi'
                '.dwf'                    = 'drawing/x-dwf'
                '.dwg'                    = 'application/acad'
                '.dwp'                    = 'application/octet-stream'
                '.dxf'                    = 'application/x-dxf'
                '.dxr'                    = 'application/x-director'
                '.eml'                    = 'message/rfc822'
                '.emz'                    = 'application/octet-stream'
                '.eot'                    = 'application/vnd.ms-fontobject'
                '.eps'                    = 'application/postscript'
                '.etl'                    = 'application/etl'
                '.etx'                    = 'text/x-setext'
                '.evy'                    = 'application/envoy'
                '.exe'                    = 'application/octet-stream'
                '.exe.config'             = 'application/xml'
                '.fdf'                    = 'application/vnd.fdf'
                '.fif'                    = 'application/fractals'
                '.filters'                = 'application/xml'
                '.fla'                    = 'application/octet-stream'
                '.flac'                   = 'audio/flac'
                '.flr'                    = 'x-world/x-vrml'
                '.flv'                    = 'video/x-flv'
                '.fsscript'               = 'application/fsharp-script'
                '.fsx'                    = 'application/fsharp-script'
                '.generictest'            = 'application/xml'
                '.gif'                    = 'image/gif'
                '.gpx'                    = 'application/gpx+xml'
                '.group'                  = 'text/x-ms-group'
                '.gsm'                    = 'audio/x-gsm'
                '.gtar'                   = 'application/x-gtar'
                '.gz'                     = 'application/x-gzip'
                '.h'                      = 'text/plain'
                '.hdf'                    = 'application/x-hdf'
                '.hdml'                   = 'text/x-hdml'
                '.hhc'                    = 'application/x-oleobject'
                '.hhk'                    = 'application/octet-stream'
                '.hhp'                    = 'application/octet-stream'
                '.hlp'                    = 'application/winhlp'
                '.hpp'                    = 'text/plain'
                '.hqx'                    = 'application/mac-binhex40'
                '.hta'                    = 'application/hta'
                '.htc'                    = 'text/x-component'
                '.htm'                    = 'text/html'
                '.html'                   = 'text/html'
                '.htt'                    = 'text/webviewhtml'
                '.hxa'                    = 'application/xml'
                '.hxc'                    = 'application/xml'
                '.hxd'                    = 'application/octet-stream'
                '.hxe'                    = 'application/xml'
                '.hxf'                    = 'application/xml'
                '.hxh'                    = 'application/octet-stream'
                '.hxi'                    = 'application/octet-stream'
                '.hxk'                    = 'application/xml'
                '.hxq'                    = 'application/octet-stream'
                '.hxr'                    = 'application/octet-stream'
                '.hxs'                    = 'application/octet-stream'
                '.hxt'                    = 'text/html'
                '.hxv'                    = 'application/xml'
                '.hxw'                    = 'application/octet-stream'
                '.hxx'                    = 'text/plain'
                '.i'                      = 'text/plain'
                '.ico'                    = 'image/x-icon'
                '.ics'                    = 'application/octet-stream'
                '.idl'                    = 'text/plain'
                '.ief'                    = 'image/ief'
                '.iii'                    = 'application/x-iphone'
                '.inc'                    = 'text/plain'
                '.inf'                    = 'application/octet-stream'
                '.ini'                    = 'text/plain'
                '.inl'                    = 'text/plain'
                '.ins'                    = 'application/x-internet-signup'
                '.ipa'                    = 'application/x-itunes-ipa'
                '.ipg'                    = 'application/x-itunes-ipg'
                '.ipproj'                 = 'text/plain'
                '.ipsw'                   = 'application/x-itunes-ipsw'
                '.iqy'                    = 'text/x-ms-iqy'
                '.isp'                    = 'application/x-internet-signup'
                '.ite'                    = 'application/x-itunes-ite'
                '.itlp'                   = 'application/x-itunes-itlp'
                '.itms'                   = 'application/x-itunes-itms'
                '.itpc'                   = 'application/x-itunes-itpc'
                '.ivf'                    = 'video/x-ivf'
                '.jar'                    = 'application/java-archive'
                '.java'                   = 'application/octet-stream'
                '.jck'                    = 'application/liquidmotion'
                '.jcz'                    = 'application/liquidmotion'
                '.jfif'                   = 'image/pjpeg'
                '.jnlp'                   = 'application/x-java-jnlp-file'
                '.jpb'                    = 'application/octet-stream'
                '.jpe'                    = 'image/jpeg'
                '.jpeg'                   = 'image/jpeg'
                '.jpg'                    = 'image/jpeg'
                '.js'                     = 'application/javascript'
                '.json'                   = 'application/json'
                '.jsx'                    = 'text/jscript'
                '.jsxbin'                 = 'text/plain'
                '.latex'                  = 'application/x-latex'
                '.library-ms'             = 'application/windows-library+xml'
                '.lit'                    = 'application/x-ms-reader'
                '.loadtest'               = 'application/xml'
                '.lpk'                    = 'application/octet-stream'
                '.lsf'                    = 'video/x-la-asf'
                '.lst'                    = 'text/plain'
                '.lsx'                    = 'video/x-la-asf'
                '.lzh'                    = 'application/octet-stream'
                '.m13'                    = 'application/x-msmediaview'
                '.m14'                    = 'application/x-msmediaview'
                '.m1v'                    = 'video/mpeg'
                '.m2t'                    = 'video/vnd.dlna.mpeg-tts'
                '.m2ts'                   = 'video/vnd.dlna.mpeg-tts'
                '.m2v'                    = 'video/mpeg'
                '.m3u'                    = 'audio/x-mpegurl'
                '.m3u8'                   = 'audio/x-mpegurl'
                '.m4a'                    = 'audio/m4a'
                '.m4b'                    = 'audio/m4b'
                '.m4p'                    = 'audio/m4p'
                '.m4r'                    = 'audio/x-m4r'
                '.m4v'                    = 'video/x-m4v'
                '.mac'                    = 'image/x-macpaint'
                '.mak'                    = 'text/plain'
                '.man'                    = 'application/x-troff-man'
                '.manifest'               = 'application/x-ms-manifest'
                '.map'                    = 'text/plain'
                '.markdown'               = 'text/markdown'
                '.master'                 = 'application/xml'
                '.mbox'                   = 'application/mbox'
                '.md'                     = 'text/markdown'
                '.mda'                    = 'application/msaccess'
                '.mdb'                    = 'application/x-msaccess'
                '.mde'                    = 'application/msaccess'
                '.mdp'                    = 'application/octet-stream'
                '.me'                     = 'application/x-troff-me'
                '.mfp'                    = 'application/x-shockwave-flash'
                '.mht'                    = 'message/rfc822'
                '.mhtml'                  = 'message/rfc822'
                '.mid'                    = 'audio/mid'
                '.midi'                   = 'audio/mid'
                '.mix'                    = 'application/octet-stream'
                '.mjs'                    = 'application/javascript'
                '.mk'                     = 'text/plain'
                '.mk3d'                   = 'video/x-matroska-3d'
                '.mka'                    = 'audio/x-matroska'
                '.mkv'                    = 'video/x-matroska'
                '.mmf'                    = 'application/x-smaf'
                '.mno'                    = 'application/xml'
                '.mny'                    = 'application/x-msmoney'
                '.mod'                    = 'video/mpeg'
                '.mov'                    = 'video/quicktime'
                '.movie'                  = 'video/x-sgi-movie'
                '.mp2'                    = 'video/mpeg'
                '.mp2v'                   = 'video/mpeg'
                '.mp3'                    = 'audio/mpeg'
                '.mp4'                    = 'video/mp4'
                '.mp4v'                   = 'video/mp4'
                '.mpa'                    = 'video/mpeg'
                '.mpe'                    = 'video/mpeg'
                '.mpeg'                   = 'video/mpeg'
                '.mpf'                    = 'application/vnd.ms-mediapackage'
                '.mpg'                    = 'video/mpeg'
                '.mpp'                    = 'application/vnd.ms-project'
                '.mpv2'                   = 'video/mpeg'
                '.mqv'                    = 'video/quicktime'
                '.ms'                     = 'application/x-troff-ms'
                '.msg'                    = 'application/vnd.ms-outlook'
                '.msi'                    = 'application/octet-stream'
                '.mso'                    = 'application/octet-stream'
                '.mts'                    = 'video/vnd.dlna.mpeg-tts'
                '.mtx'                    = 'application/xml'
                '.mvb'                    = 'application/x-msmediaview'
                '.mvc'                    = 'application/x-miva-compiled'
                '.mxp'                    = 'application/x-mmxp'
                '.nc'                     = 'application/x-netcdf'
                '.nsc'                    = 'video/x-ms-asf'
                '.nws'                    = 'message/rfc822'
                '.ocx'                    = 'application/octet-stream'
                '.oda'                    = 'application/oda'
                '.odb'                    = 'application/vnd.oasis.opendocument.database'
                '.odc'                    = 'application/vnd.oasis.opendocument.chart'
                '.odf'                    = 'application/vnd.oasis.opendocument.formula'
                '.odg'                    = 'application/vnd.oasis.opendocument.graphics'
                '.odh'                    = 'text/plain'
                '.odi'                    = 'application/vnd.oasis.opendocument.image'
                '.odl'                    = 'text/plain'
                '.odm'                    = 'application/vnd.oasis.opendocument.text-master'
                '.odp'                    = 'application/vnd.oasis.opendocument.presentation'
                '.ods'                    = 'application/vnd.oasis.opendocument.spreadsheet'
                '.odt'                    = 'application/vnd.oasis.opendocument.text'
                '.oga'                    = 'audio/ogg'
                '.ogg'                    = 'audio/ogg'
                '.ogv'                    = 'video/ogg'
                '.ogx'                    = 'application/ogg'
                '.one'                    = 'application/onenote'
                '.onea'                   = 'application/onenote'
                '.onepkg'                 = 'application/onenote'
                '.onetmp'                 = 'application/onenote'
                '.onetoc'                 = 'application/onenote'
                '.onetoc2'                = 'application/onenote'
                '.opus'                   = 'audio/ogg'
                '.orderedtest'            = 'application/xml'
                '.osdx'                   = 'application/opensearchdescription+xml'
                '.otf'                    = 'application/font-sfnt'
                '.otg'                    = 'application/vnd.oasis.opendocument.graphics-template'
                '.oth'                    = 'application/vnd.oasis.opendocument.text-web'
                '.otp'                    = 'application/vnd.oasis.opendocument.presentation-template'
                '.ots'                    = 'application/vnd.oasis.opendocument.spreadsheet-template'
                '.ott'                    = 'application/vnd.oasis.opendocument.text-template'
                '.oxt'                    = 'application/vnd.openofficeorg.extension'
                '.p10'                    = 'application/pkcs10'
                '.p12'                    = 'application/x-pkcs12'
                '.p7b'                    = 'application/x-pkcs7-certificates'
                '.p7c'                    = 'application/pkcs7-mime'
                '.p7m'                    = 'application/pkcs7-mime'
                '.p7r'                    = 'application/x-pkcs7-certreqresp'
                '.p7s'                    = 'application/pkcs7-signature'
                '.pbm'                    = 'image/x-portable-bitmap'
                '.pcast'                  = 'application/x-podcast'
                '.pct'                    = 'image/pict'
                '.pcx'                    = 'application/octet-stream'
                '.pcz'                    = 'application/octet-stream'
                '.pdf'                    = 'application/pdf'
                '.pfb'                    = 'application/octet-stream'
                '.pfm'                    = 'application/octet-stream'
                '.pfx'                    = 'application/x-pkcs12'
                '.pgm'                    = 'image/x-portable-graymap'
                '.pic'                    = 'image/pict'
                '.pict'                   = 'image/pict'
                '.pkgdef'                 = 'text/plain'
                '.pkgundef'               = 'text/plain'
                '.pko'                    = 'application/vnd.ms-pki.pko'
                '.pls'                    = 'audio/scpls'
                '.pma'                    = 'application/x-perfmon'
                '.pmc'                    = 'application/x-perfmon'
                '.pml'                    = 'application/x-perfmon'
                '.pmr'                    = 'application/x-perfmon'
                '.pmw'                    = 'application/x-perfmon'
                '.png'                    = 'image/png'
                '.pnm'                    = 'image/x-portable-anymap'
                '.pnt'                    = 'image/x-macpaint'
                '.pntg'                   = 'image/x-macpaint'
                '.pnz'                    = 'image/png'
                '.pode'                   = 'application/PowerShell'
                '.pot'                    = 'application/vnd.ms-powerpoint'
                '.potm'                   = 'application/vnd.ms-powerpoint.template.macroEnabled.12'
                '.potx'                   = 'application/vnd.openxmlformats-officedocument.presentationml.template'
                '.ppa'                    = 'application/vnd.ms-powerpoint'
                '.ppam'                   = 'application/vnd.ms-powerpoint.addin.macroEnabled.12'
                '.ppm'                    = 'image/x-portable-pixmap'
                '.pps'                    = 'application/vnd.ms-powerpoint'
                '.ppsm'                   = 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'
                '.ppsx'                   = 'application/vnd.openxmlformats-officedocument.presentationml.slideshow'
                '.ppt'                    = 'application/vnd.ms-powerpoint'
                '.pptm'                   = 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'
                '.pptx'                   = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
                '.prf'                    = 'application/pics-rules'
                '.prm'                    = 'application/octet-stream'
                '.prx'                    = 'application/octet-stream'
                '.ps'                     = 'application/postscript'
                '.ps1'                    = 'application/PowerShell'
                '.psc1'                   = 'application/PowerShell'
                '.psd1'                   = 'application/PowerShell'
                '.psm1'                   = 'application/PowerShell'
                '.psd'                    = 'application/octet-stream'
                '.psess'                  = 'application/xml'
                '.psm'                    = 'application/octet-stream'
                '.psp'                    = 'application/octet-stream'
                '.pst'                    = 'application/vnd.ms-outlook'
                '.pub'                    = 'application/x-mspublisher'
                '.pwz'                    = 'application/vnd.ms-powerpoint'
                '.qht'                    = 'text/x-html-insertion'
                '.qhtm'                   = 'text/x-html-insertion'
                '.qt'                     = 'video/quicktime'
                '.qti'                    = 'image/x-quicktime'
                '.qtif'                   = 'image/x-quicktime'
                '.qtl'                    = 'application/x-quicktimeplayer'
                '.qxd'                    = 'application/octet-stream'
                '.ra'                     = 'audio/x-pn-realaudio'
                '.ram'                    = 'audio/x-pn-realaudio'
                '.rar'                    = 'application/x-rar-compressed'
                '.ras'                    = 'image/x-cmu-raster'
                '.rat'                    = 'application/rat-file'
                '.rc'                     = 'text/plain'
                '.rc2'                    = 'text/plain'
                '.rct'                    = 'text/plain'
                '.rdlc'                   = 'application/xml'
                '.reg'                    = 'text/plain'
                '.resx'                   = 'application/xml'
                '.rf'                     = 'image/vnd.rn-realflash'
                '.rgb'                    = 'image/x-rgb'
                '.rgs'                    = 'text/plain'
                '.rm'                     = 'application/vnd.rn-realmedia'
                '.rmi'                    = 'audio/mid'
                '.rmp'                    = 'application/vnd.rn-rn_music_package'
                '.roff'                   = 'application/x-troff'
                '.rpm'                    = 'audio/x-pn-realaudio-plugin'
                '.rqy'                    = 'text/x-ms-rqy'
                '.rtf'                    = 'application/rtf'
                '.rtx'                    = 'text/richtext'
                '.rvt'                    = 'application/octet-stream'
                '.ruleset'                = 'application/xml'
                '.s'                      = 'text/plain'
                '.safariextz'             = 'application/x-safari-safariextz'
                '.scd'                    = 'application/x-msschedule'
                '.scr'                    = 'text/plain'
                '.sct'                    = 'text/scriptlet'
                '.sd2'                    = 'audio/x-sd2'
                '.sdp'                    = 'application/sdp'
                '.sea'                    = 'application/octet-stream'
                '.searchconnector-ms'     = 'application/windows-search-connector+xml'
                '.setpay'                 = 'application/set-payment-initiation'
                '.setreg'                 = 'application/set-registration-initiation'
                '.settings'               = 'application/xml'
                '.sgimb'                  = 'application/x-sgimb'
                '.sgml'                   = 'text/sgml'
                '.sh'                     = 'application/x-sh'
                '.shar'                   = 'application/x-shar'
                '.shtml'                  = 'text/html'
                '.sit'                    = 'application/x-stuffit'
                '.sitemap'                = 'application/xml'
                '.skin'                   = 'application/xml'
                '.skp'                    = 'application/x-koan'
                '.sldm'                   = 'application/vnd.ms-powerpoint.slide.macroEnabled.12'
                '.sldx'                   = 'application/vnd.openxmlformats-officedocument.presentationml.slide'
                '.slk'                    = 'application/vnd.ms-excel'
                '.sln'                    = 'text/plain'
                '.slupkg-ms'              = 'application/x-ms-license'
                '.smd'                    = 'audio/x-smd'
                '.smi'                    = 'application/octet-stream'
                '.smx'                    = 'audio/x-smd'
                '.smz'                    = 'audio/x-smd'
                '.snd'                    = 'audio/basic'
                '.snippet'                = 'application/xml'
                '.snp'                    = 'application/octet-stream'
                '.sol'                    = 'text/plain'
                '.sor'                    = 'text/plain'
                '.spc'                    = 'application/x-pkcs7-certificates'
                '.spl'                    = 'application/futuresplash'
                '.spx'                    = 'audio/ogg'
                '.src'                    = 'application/x-wais-source'
                '.srf'                    = 'text/plain'
                '.ssisdeploymentmanifest' = 'application/xml'
                '.ssm'                    = 'application/streamingmedia'
                '.sst'                    = 'application/vnd.ms-pki.certstore'
                '.stl'                    = 'application/vnd.ms-pki.stl'
                '.sv4cpio'                = 'application/x-sv4cpio'
                '.sv4crc'                 = 'application/x-sv4crc'
                '.svc'                    = 'application/xml'
                '.svg'                    = 'image/svg+xml'
                '.swf'                    = 'application/x-shockwave-flash'
                '.step'                   = 'application/step'
                '.stp'                    = 'application/step'
                '.t'                      = 'application/x-troff'
                '.tar'                    = 'application/x-tar'
                '.tcl'                    = 'application/x-tcl'
                '.testrunconfig'          = 'application/xml'
                '.testsettings'           = 'application/xml'
                '.tex'                    = 'application/x-tex'
                '.texi'                   = 'application/x-texinfo'
                '.texinfo'                = 'application/x-texinfo'
                '.tgz'                    = 'application/x-compressed'
                '.thmx'                   = 'application/vnd.ms-officetheme'
                '.thn'                    = 'application/octet-stream'
                '.tif'                    = 'image/tiff'
                '.tiff'                   = 'image/tiff'
                '.tlh'                    = 'text/plain'
                '.tli'                    = 'text/plain'
                '.toc'                    = 'application/octet-stream'
                '.tr'                     = 'application/x-troff'
                '.trm'                    = 'application/x-msterminal'
                '.trx'                    = 'application/xml'
                '.ts'                     = 'video/vnd.dlna.mpeg-tts'
                '.tsv'                    = 'text/tab-separated-values'
                '.ttf'                    = 'application/font-sfnt'
                '.tts'                    = 'video/vnd.dlna.mpeg-tts'
                '.txt'                    = 'text/plain'
                '.u32'                    = 'application/octet-stream'
                '.uls'                    = 'text/iuls'
                '.user'                   = 'text/plain'
                '.ustar'                  = 'application/x-ustar'
                '.vb'                     = 'text/plain'
                '.vbdproj'                = 'text/plain'
                '.vbk'                    = 'video/mpeg'
                '.vbproj'                 = 'text/plain'
                '.vbs'                    = 'text/vbscript'
                '.vcf'                    = 'text/x-vcard'
                '.vcproj'                 = 'application/xml'
                '.vcs'                    = 'text/plain'
                '.vcxproj'                = 'application/xml'
                '.vddproj'                = 'text/plain'
                '.vdp'                    = 'text/plain'
                '.vdproj'                 = 'text/plain'
                '.vdx'                    = 'application/vnd.ms-visio.viewer'
                '.vml'                    = 'application/xml'
                '.vscontent'              = 'application/xml'
                '.vsct'                   = 'application/xml'
                '.vsd'                    = 'application/vnd.visio'
                '.vsi'                    = 'application/ms-vsi'
                '.vsix'                   = 'application/vsix'
                '.vsixlangpack'           = 'application/xml'
                '.vsixmanifest'           = 'application/xml'
                '.vsmdi'                  = 'application/xml'
                '.vspscc'                 = 'text/plain'
                '.vss'                    = 'application/vnd.visio'
                '.vsscc'                  = 'text/plain'
                '.vssettings'             = 'application/xml'
                '.vssscc'                 = 'text/plain'
                '.vst'                    = 'application/vnd.visio'
                '.vstemplate'             = 'application/xml'
                '.vsto'                   = 'application/x-ms-vsto'
                '.vsw'                    = 'application/vnd.visio'
                '.vsx'                    = 'application/vnd.visio'
                '.vtx'                    = 'application/vnd.visio'
                '.wasm'                   = 'application/wasm'
                '.wav'                    = 'audio/wav'
                '.wave'                   = 'audio/wav'
                '.wax'                    = 'audio/x-ms-wax'
                '.wbk'                    = 'application/msword'
                '.wbmp'                   = 'image/vnd.wap.wbmp'
                '.wcm'                    = 'application/vnd.ms-works'
                '.wdb'                    = 'application/vnd.ms-works'
                '.wdp'                    = 'image/vnd.ms-photo'
                '.webarchive'             = 'application/x-safari-webarchive'
                '.webm'                   = 'video/webm'
                '.webp'                   = 'image/webp'
                '.webtest'                = 'application/xml'
                '.wiq'                    = 'application/xml'
                '.wiz'                    = 'application/msword'
                '.wks'                    = 'application/vnd.ms-works'
                '.wlmp'                   = 'application/wlmoviemaker'
                '.wlpginstall'            = 'application/x-wlpg-detect'
                '.wlpginstall3'           = 'application/x-wlpg3-detect'
                '.wm'                     = 'video/x-ms-wm'
                '.wma'                    = 'audio/x-ms-wma'
                '.wmd'                    = 'application/x-ms-wmd'
                '.wmf'                    = 'application/x-msmetafile'
                '.wml'                    = 'text/vnd.wap.wml'
                '.wmlc'                   = 'application/vnd.wap.wmlc'
                '.wmls'                   = 'text/vnd.wap.wmlscript'
                '.wmlsc'                  = 'application/vnd.wap.wmlscriptc'
                '.wmp'                    = 'video/x-ms-wmp'
                '.wmv'                    = 'video/x-ms-wmv'
                '.wmx'                    = 'video/x-ms-wmx'
                '.wmz'                    = 'application/x-ms-wmz'
                '.woff'                   = 'application/font-woff'
                '.woff2'                  = 'application/font-woff2'
                '.wpl'                    = 'application/vnd.ms-wpl'
                '.wps'                    = 'application/vnd.ms-works'
                '.wri'                    = 'application/x-mswrite'
                '.wrl'                    = 'x-world/x-vrml'
                '.wrz'                    = 'x-world/x-vrml'
                '.wsc'                    = 'text/scriptlet'
                '.wsdl'                   = 'application/xml'
                '.wvx'                    = 'video/x-ms-wvx'
                '.x'                      = 'application/directx'
                '.xaf'                    = 'x-world/x-vrml'
                '.xaml'                   = 'application/xaml+xml'
                '.xap'                    = 'application/x-silverlight-app'
                '.xbap'                   = 'application/x-ms-xbap'
                '.xbm'                    = 'image/x-xbitmap'
                '.xdr'                    = 'text/plain'
                '.xht'                    = 'application/xhtml+xml'
                '.xhtml'                  = 'application/xhtml+xml'
                '.xla'                    = 'application/vnd.ms-excel'
                '.xlam'                   = 'application/vnd.ms-excel.addin.macroEnabled.12'
                '.xlc'                    = 'application/vnd.ms-excel'
                '.xld'                    = 'application/vnd.ms-excel'
                '.xlk'                    = 'application/vnd.ms-excel'
                '.xll'                    = 'application/vnd.ms-excel'
                '.xlm'                    = 'application/vnd.ms-excel'
                '.xls'                    = 'application/vnd.ms-excel'
                '.xlsb'                   = 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'
                '.xlsm'                   = 'application/vnd.ms-excel.sheet.macroEnabled.12'
                '.xlsx'                   = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
                '.xlt'                    = 'application/vnd.ms-excel'
                '.xltm'                   = 'application/vnd.ms-excel.template.macroEnabled.12'
                '.xltx'                   = 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'
                '.xlw'                    = 'application/vnd.ms-excel'
                '.xml'                    = 'application/xml'
                '.xmp'                    = 'application/octet-stream'
                '.xmta'                   = 'application/xml'
                '.xof'                    = 'x-world/x-vrml'
                '.xoml'                   = 'text/plain'
                '.xpm'                    = 'image/x-xpixmap'
                '.xps'                    = 'application/vnd.ms-xpsdocument'
                '.xrm-ms'                 = 'application/xml'
                '.xsc'                    = 'application/xml'
                '.xsd'                    = 'application/xml'
                '.xsf'                    = 'application/xml'
                '.xsl'                    = 'application/xml'
                '.xslt'                   = 'application/xml'
                '.xsn'                    = 'application/octet-stream'
                '.xss'                    = 'application/xml'
                '.xspf'                   = 'application/xspf+xml'
                '.xtp'                    = 'application/octet-stream'
                '.xwd'                    = 'image/x-xwindowdump'
                '.yaml'                   = 'application/yaml'
                '.yml'                    = 'application/yaml'
                '.z'                      = 'application/x-compress'
                '.zip'                    = 'application/zip'
            } }
        BeforeDiscovery {
            $types = @{
                '.323'                    = 'text/h323'
                '.3g2'                    = 'video/3gpp2'
                '.3gp'                    = 'video/3gpp'
                '.3gp2'                   = 'video/3gpp2'
                '.3gpp'                   = 'video/3gpp'
                '.7z'                     = 'application/x-7z-compressed'
                '.aa'                     = 'audio/audible'
                '.aac'                    = 'audio/aac'
                '.aaf'                    = 'application/octet-stream'
                '.aax'                    = 'audio/vnd.audible.aax'
                '.ac3'                    = 'audio/ac3'
                '.aca'                    = 'application/octet-stream'
                '.accda'                  = 'application/msaccess.addin'
                '.accdb'                  = 'application/msaccess'
                '.accdc'                  = 'application/msaccess.cab'
                '.accde'                  = 'application/msaccess'
                '.accdr'                  = 'application/msaccess.runtime'
                '.accdt'                  = 'application/msaccess'
                '.accdw'                  = 'application/msaccess.webapplication'
                '.accft'                  = 'application/msaccess.ftemplate'
                '.acx'                    = 'application/internet-property-stream'
                '.addin'                  = 'application/xml'
                '.ade'                    = 'application/msaccess'
                '.adobebridge'            = 'application/x-bridge-url'
                '.adp'                    = 'application/msaccess'
                '.adt'                    = 'audio/vnd.dlna.adts'
                '.adts'                   = 'audio/aac'
                '.afm'                    = 'application/octet-stream'
                '.ai'                     = 'application/postscript'
                '.aif'                    = 'audio/aiff'
                '.aifc'                   = 'audio/aiff'
                '.aiff'                   = 'audio/aiff'
                '.air'                    = 'application/vnd.adobe.air-application-installer-package+zip'
                '.amc'                    = 'application/mpeg'
                '.anx'                    = 'application/annodex'
                '.apk'                    = 'application/vnd.android.package-archive'
                '.application'            = 'application/x-ms-application'
                '.art'                    = 'image/x-jg'
                '.asa'                    = 'application/xml'
                '.asax'                   = 'application/xml'
                '.ascx'                   = 'application/xml'
                '.asd'                    = 'application/octet-stream'
                '.asf'                    = 'video/x-ms-asf'
                '.ashx'                   = 'application/xml'
                '.asi'                    = 'application/octet-stream'
                '.asm'                    = 'text/plain'
                '.asmx'                   = 'application/xml'
                '.aspx'                   = 'application/xml'
                '.asr'                    = 'video/x-ms-asf'
                '.asx'                    = 'video/x-ms-asf'
                '.atom'                   = 'application/atom+xml'
                '.au'                     = 'audio/basic'
                '.avi'                    = 'video/x-msvideo'
                '.axa'                    = 'audio/annodex'
                '.axs'                    = 'application/olescript'
                '.axv'                    = 'video/annodex'
                '.bas'                    = 'text/plain'
                '.bcpio'                  = 'application/x-bcpio'
                '.bin'                    = 'application/octet-stream'
                '.bmp'                    = 'image/bmp'
                '.c'                      = 'text/plain'
                '.cab'                    = 'application/octet-stream'
                '.caf'                    = 'audio/x-caf'
                '.calx'                   = 'application/vnd.ms-office.calx'
                '.cat'                    = 'application/vnd.ms-pki.seccat'
                '.cc'                     = 'text/plain'
                '.cd'                     = 'text/plain'
                '.cdda'                   = 'audio/aiff'
                '.cdf'                    = 'application/x-cdf'
                '.cer'                    = 'application/x-x509-ca-cert'
                '.cfg'                    = 'text/plain'
                '.chm'                    = 'application/octet-stream'
                '.class'                  = 'application/x-java-applet'
                '.clp'                    = 'application/x-msclip'
                '.cmd'                    = 'text/plain'
                '.cmx'                    = 'image/x-cmx'
                '.cnf'                    = 'text/plain'
                '.cod'                    = 'image/cis-cod'
                '.config'                 = 'application/xml'
                '.contact'                = 'text/x-ms-contact'
                '.coverage'               = 'application/xml'
                '.cpio'                   = 'application/x-cpio'
                '.cpp'                    = 'text/plain'
                '.crd'                    = 'application/x-mscardfile'
                '.crl'                    = 'application/pkix-crl'
                '.crt'                    = 'application/x-x509-ca-cert'
                '.cs'                     = 'text/plain'
                '.csdproj'                = 'text/plain'
                '.csh'                    = 'application/x-csh'
                '.csproj'                 = 'text/plain'
                '.css'                    = 'text/css'
                '.csv'                    = 'text/csv'
                '.cur'                    = 'application/octet-stream'
                '.cxx'                    = 'text/plain'
                '.dat'                    = 'application/octet-stream'
                '.datasource'             = 'application/xml'
                '.dbproj'                 = 'text/plain'
                '.dcr'                    = 'application/x-director'
                '.def'                    = 'text/plain'
                '.deploy'                 = 'application/octet-stream'
                '.der'                    = 'application/x-x509-ca-cert'
                '.dgml'                   = 'application/xml'
                '.dib'                    = 'image/bmp'
                '.dif'                    = 'video/x-dv'
                '.dir'                    = 'application/x-director'
                '.disco'                  = 'application/xml'
                '.divx'                   = 'video/divx'
                '.dll'                    = 'application/x-msdownload'
                '.dll.config'             = 'application/xml'
                '.dlm'                    = 'text/dlm'
                '.doc'                    = 'application/msword'
                '.docm'                   = 'application/vnd.ms-word.document.macroEnabled.12'
                '.docx'                   = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
                '.dot'                    = 'application/msword'
                '.dotm'                   = 'application/vnd.ms-word.template.macroEnabled.12'
                '.dotx'                   = 'application/vnd.openxmlformats-officedocument.wordprocessingml.template'
                '.dsp'                    = 'application/octet-stream'
                '.dsw'                    = 'text/plain'
                '.dtd'                    = 'application/xml'
                '.dtsconfig'              = 'application/xml'
                '.dv'                     = 'video/x-dv'
                '.dvi'                    = 'application/x-dvi'
                '.dwf'                    = 'drawing/x-dwf'
                '.dwg'                    = 'application/acad'
                '.dwp'                    = 'application/octet-stream'
                '.dxf'                    = 'application/x-dxf'
                '.dxr'                    = 'application/x-director'
                '.eml'                    = 'message/rfc822'
                '.emz'                    = 'application/octet-stream'
                '.eot'                    = 'application/vnd.ms-fontobject'
                '.eps'                    = 'application/postscript'
                '.etl'                    = 'application/etl'
                '.etx'                    = 'text/x-setext'
                '.evy'                    = 'application/envoy'
                '.exe'                    = 'application/octet-stream'
                '.exe.config'             = 'application/xml'
                '.fdf'                    = 'application/vnd.fdf'
                '.fif'                    = 'application/fractals'
                '.filters'                = 'application/xml'
                '.fla'                    = 'application/octet-stream'
                '.flac'                   = 'audio/flac'
                '.flr'                    = 'x-world/x-vrml'
                '.flv'                    = 'video/x-flv'
                '.fsscript'               = 'application/fsharp-script'
                '.fsx'                    = 'application/fsharp-script'
                '.generictest'            = 'application/xml'
                '.gif'                    = 'image/gif'
                '.gpx'                    = 'application/gpx+xml'
                '.group'                  = 'text/x-ms-group'
                '.gsm'                    = 'audio/x-gsm'
                '.gtar'                   = 'application/x-gtar'
                '.gz'                     = 'application/x-gzip'
                '.h'                      = 'text/plain'
                '.hdf'                    = 'application/x-hdf'
                '.hdml'                   = 'text/x-hdml'
                '.hhc'                    = 'application/x-oleobject'
                '.hhk'                    = 'application/octet-stream'
                '.hhp'                    = 'application/octet-stream'
                '.hlp'                    = 'application/winhlp'
                '.hpp'                    = 'text/plain'
                '.hqx'                    = 'application/mac-binhex40'
                '.hta'                    = 'application/hta'
                '.htc'                    = 'text/x-component'
                '.htm'                    = 'text/html'
                '.html'                   = 'text/html'
                '.htt'                    = 'text/webviewhtml'
                '.hxa'                    = 'application/xml'
                '.hxc'                    = 'application/xml'
                '.hxd'                    = 'application/octet-stream'
                '.hxe'                    = 'application/xml'
                '.hxf'                    = 'application/xml'
                '.hxh'                    = 'application/octet-stream'
                '.hxi'                    = 'application/octet-stream'
                '.hxk'                    = 'application/xml'
                '.hxq'                    = 'application/octet-stream'
                '.hxr'                    = 'application/octet-stream'
                '.hxs'                    = 'application/octet-stream'
                '.hxt'                    = 'text/html'
                '.hxv'                    = 'application/xml'
                '.hxw'                    = 'application/octet-stream'
                '.hxx'                    = 'text/plain'
                '.i'                      = 'text/plain'
                '.ico'                    = 'image/x-icon'
                '.ics'                    = 'application/octet-stream'
                '.idl'                    = 'text/plain'
                '.ief'                    = 'image/ief'
                '.iii'                    = 'application/x-iphone'
                '.inc'                    = 'text/plain'
                '.inf'                    = 'application/octet-stream'
                '.ini'                    = 'text/plain'
                '.inl'                    = 'text/plain'
                '.ins'                    = 'application/x-internet-signup'
                '.ipa'                    = 'application/x-itunes-ipa'
                '.ipg'                    = 'application/x-itunes-ipg'
                '.ipproj'                 = 'text/plain'
                '.ipsw'                   = 'application/x-itunes-ipsw'
                '.iqy'                    = 'text/x-ms-iqy'
                '.isp'                    = 'application/x-internet-signup'
                '.ite'                    = 'application/x-itunes-ite'
                '.itlp'                   = 'application/x-itunes-itlp'
                '.itms'                   = 'application/x-itunes-itms'
                '.itpc'                   = 'application/x-itunes-itpc'
                '.ivf'                    = 'video/x-ivf'
                '.jar'                    = 'application/java-archive'
                '.java'                   = 'application/octet-stream'
                '.jck'                    = 'application/liquidmotion'
                '.jcz'                    = 'application/liquidmotion'
                '.jfif'                   = 'image/pjpeg'
                '.jnlp'                   = 'application/x-java-jnlp-file'
                '.jpb'                    = 'application/octet-stream'
                '.jpe'                    = 'image/jpeg'
                '.jpeg'                   = 'image/jpeg'
                '.jpg'                    = 'image/jpeg'
                '.js'                     = 'application/javascript'
                '.json'                   = 'application/json'
                '.jsx'                    = 'text/jscript'
                '.jsxbin'                 = 'text/plain'
                '.latex'                  = 'application/x-latex'
                '.library-ms'             = 'application/windows-library+xml'
                '.lit'                    = 'application/x-ms-reader'
                '.loadtest'               = 'application/xml'
                '.lpk'                    = 'application/octet-stream'
                '.lsf'                    = 'video/x-la-asf'
                '.lst'                    = 'text/plain'
                '.lsx'                    = 'video/x-la-asf'
                '.lzh'                    = 'application/octet-stream'
                '.m13'                    = 'application/x-msmediaview'
                '.m14'                    = 'application/x-msmediaview'
                '.m1v'                    = 'video/mpeg'
                '.m2t'                    = 'video/vnd.dlna.mpeg-tts'
                '.m2ts'                   = 'video/vnd.dlna.mpeg-tts'
                '.m2v'                    = 'video/mpeg'
                '.m3u'                    = 'audio/x-mpegurl'
                '.m3u8'                   = 'audio/x-mpegurl'
                '.m4a'                    = 'audio/m4a'
                '.m4b'                    = 'audio/m4b'
                '.m4p'                    = 'audio/m4p'
                '.m4r'                    = 'audio/x-m4r'
                '.m4v'                    = 'video/x-m4v'
                '.mac'                    = 'image/x-macpaint'
                '.mak'                    = 'text/plain'
                '.man'                    = 'application/x-troff-man'
                '.manifest'               = 'application/x-ms-manifest'
                '.map'                    = 'text/plain'
                '.markdown'               = 'text/markdown'
                '.master'                 = 'application/xml'
                '.mbox'                   = 'application/mbox'
                '.md'                     = 'text/markdown'
                '.mda'                    = 'application/msaccess'
                '.mdb'                    = 'application/x-msaccess'
                '.mde'                    = 'application/msaccess'
                '.mdp'                    = 'application/octet-stream'
                '.me'                     = 'application/x-troff-me'
                '.mfp'                    = 'application/x-shockwave-flash'
                '.mht'                    = 'message/rfc822'
                '.mhtml'                  = 'message/rfc822'
                '.mid'                    = 'audio/mid'
                '.midi'                   = 'audio/mid'
                '.mix'                    = 'application/octet-stream'
                '.mk'                     = 'text/plain'
                '.mk3d'                   = 'video/x-matroska-3d'
                '.mka'                    = 'audio/x-matroska'
                '.mkv'                    = 'video/x-matroska'
                '.mmf'                    = 'application/x-smaf'
                '.mno'                    = 'application/xml'
                '.mny'                    = 'application/x-msmoney'
                '.mod'                    = 'video/mpeg'
                '.mov'                    = 'video/quicktime'
                '.movie'                  = 'video/x-sgi-movie'
                '.mp2'                    = 'video/mpeg'
                '.mp2v'                   = 'video/mpeg'
                '.mp3'                    = 'audio/mpeg'
                '.mp4'                    = 'video/mp4'
                '.mp4v'                   = 'video/mp4'
                '.mpa'                    = 'video/mpeg'
                '.mpe'                    = 'video/mpeg'
                '.mpeg'                   = 'video/mpeg'
                '.mpf'                    = 'application/vnd.ms-mediapackage'
                '.mpg'                    = 'video/mpeg'
                '.mpp'                    = 'application/vnd.ms-project'
                '.mpv2'                   = 'video/mpeg'
                '.mqv'                    = 'video/quicktime'
                '.ms'                     = 'application/x-troff-ms'
                '.msg'                    = 'application/vnd.ms-outlook'
                '.msi'                    = 'application/octet-stream'
                '.mso'                    = 'application/octet-stream'
                '.mts'                    = 'video/vnd.dlna.mpeg-tts'
                '.mtx'                    = 'application/xml'
                '.mvb'                    = 'application/x-msmediaview'
                '.mvc'                    = 'application/x-miva-compiled'
                '.mxp'                    = 'application/x-mmxp'
                '.nc'                     = 'application/x-netcdf'
                '.nsc'                    = 'video/x-ms-asf'
                '.nws'                    = 'message/rfc822'
                '.ocx'                    = 'application/octet-stream'
                '.oda'                    = 'application/oda'
                '.odb'                    = 'application/vnd.oasis.opendocument.database'
                '.odc'                    = 'application/vnd.oasis.opendocument.chart'
                '.odf'                    = 'application/vnd.oasis.opendocument.formula'
                '.odg'                    = 'application/vnd.oasis.opendocument.graphics'
                '.odh'                    = 'text/plain'
                '.odi'                    = 'application/vnd.oasis.opendocument.image'
                '.odl'                    = 'text/plain'
                '.odm'                    = 'application/vnd.oasis.opendocument.text-master'
                '.odp'                    = 'application/vnd.oasis.opendocument.presentation'
                '.ods'                    = 'application/vnd.oasis.opendocument.spreadsheet'
                '.odt'                    = 'application/vnd.oasis.opendocument.text'
                '.oga'                    = 'audio/ogg'
                '.ogg'                    = 'audio/ogg'
                '.ogv'                    = 'video/ogg'
                '.ogx'                    = 'application/ogg'
                '.one'                    = 'application/onenote'
                '.onea'                   = 'application/onenote'
                '.onepkg'                 = 'application/onenote'
                '.onetmp'                 = 'application/onenote'
                '.onetoc'                 = 'application/onenote'
                '.onetoc2'                = 'application/onenote'
                '.opus'                   = 'audio/ogg'
                '.orderedtest'            = 'application/xml'
                '.osdx'                   = 'application/opensearchdescription+xml'
                '.otf'                    = 'application/font-sfnt'
                '.otg'                    = 'application/vnd.oasis.opendocument.graphics-template'
                '.oth'                    = 'application/vnd.oasis.opendocument.text-web'
                '.otp'                    = 'application/vnd.oasis.opendocument.presentation-template'
                '.ots'                    = 'application/vnd.oasis.opendocument.spreadsheet-template'
                '.ott'                    = 'application/vnd.oasis.opendocument.text-template'
                '.oxt'                    = 'application/vnd.openofficeorg.extension'
                '.p10'                    = 'application/pkcs10'
                '.p12'                    = 'application/x-pkcs12'
                '.p7b'                    = 'application/x-pkcs7-certificates'
                '.p7c'                    = 'application/pkcs7-mime'
                '.p7m'                    = 'application/pkcs7-mime'
                '.p7r'                    = 'application/x-pkcs7-certreqresp'
                '.p7s'                    = 'application/pkcs7-signature'
                '.pbm'                    = 'image/x-portable-bitmap'
                '.pcast'                  = 'application/x-podcast'
                '.pct'                    = 'image/pict'
                '.pcx'                    = 'application/octet-stream'
                '.pcz'                    = 'application/octet-stream'
                '.pdf'                    = 'application/pdf'
                '.pfb'                    = 'application/octet-stream'
                '.pfm'                    = 'application/octet-stream'
                '.pfx'                    = 'application/x-pkcs12'
                '.pgm'                    = 'image/x-portable-graymap'
                '.pic'                    = 'image/pict'
                '.pict'                   = 'image/pict'
                '.pkgdef'                 = 'text/plain'
                '.pkgundef'               = 'text/plain'
                '.pko'                    = 'application/vnd.ms-pki.pko'
                '.pls'                    = 'audio/scpls'
                '.pma'                    = 'application/x-perfmon'
                '.pmc'                    = 'application/x-perfmon'
                '.pml'                    = 'application/x-perfmon'
                '.pmr'                    = 'application/x-perfmon'
                '.pmw'                    = 'application/x-perfmon'
                '.png'                    = 'image/png'
                '.pnm'                    = 'image/x-portable-anymap'
                '.pnt'                    = 'image/x-macpaint'
                '.pntg'                   = 'image/x-macpaint'
                '.pnz'                    = 'image/png'
                '.pode'                   = 'application/PowerShell'
                '.pot'                    = 'application/vnd.ms-powerpoint'
                '.potm'                   = 'application/vnd.ms-powerpoint.template.macroEnabled.12'
                '.potx'                   = 'application/vnd.openxmlformats-officedocument.presentationml.template'
                '.ppa'                    = 'application/vnd.ms-powerpoint'
                '.ppam'                   = 'application/vnd.ms-powerpoint.addin.macroEnabled.12'
                '.ppm'                    = 'image/x-portable-pixmap'
                '.pps'                    = 'application/vnd.ms-powerpoint'
                '.ppsm'                   = 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'
                '.ppsx'                   = 'application/vnd.openxmlformats-officedocument.presentationml.slideshow'
                '.ppt'                    = 'application/vnd.ms-powerpoint'
                '.pptm'                   = 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'
                '.pptx'                   = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
                '.prf'                    = 'application/pics-rules'
                '.prm'                    = 'application/octet-stream'
                '.prx'                    = 'application/octet-stream'
                '.ps'                     = 'application/postscript'
                '.ps1'                    = 'application/PowerShell'
                '.psc1'                   = 'application/PowerShell'
                '.psd1'                   = 'application/PowerShell'
                '.psm1'                   = 'application/PowerShell'
                '.psd'                    = 'application/octet-stream'
                '.psess'                  = 'application/xml'
                '.psm'                    = 'application/octet-stream'
                '.psp'                    = 'application/octet-stream'
                '.pst'                    = 'application/vnd.ms-outlook'
                '.pub'                    = 'application/x-mspublisher'
                '.pwz'                    = 'application/vnd.ms-powerpoint'
                '.qht'                    = 'text/x-html-insertion'
                '.qhtm'                   = 'text/x-html-insertion'
                '.qt'                     = 'video/quicktime'
                '.qti'                    = 'image/x-quicktime'
                '.qtif'                   = 'image/x-quicktime'
                '.qtl'                    = 'application/x-quicktimeplayer'
                '.qxd'                    = 'application/octet-stream'
                '.ra'                     = 'audio/x-pn-realaudio'
                '.ram'                    = 'audio/x-pn-realaudio'
                '.rar'                    = 'application/x-rar-compressed'
                '.ras'                    = 'image/x-cmu-raster'
                '.rat'                    = 'application/rat-file'
                '.rc'                     = 'text/plain'
                '.rc2'                    = 'text/plain'
                '.rct'                    = 'text/plain'
                '.rdlc'                   = 'application/xml'
                '.reg'                    = 'text/plain'
                '.resx'                   = 'application/xml'
                '.rf'                     = 'image/vnd.rn-realflash'
                '.rgb'                    = 'image/x-rgb'
                '.rgs'                    = 'text/plain'
                '.rm'                     = 'application/vnd.rn-realmedia'
                '.rmi'                    = 'audio/mid'
                '.rmp'                    = 'application/vnd.rn-rn_music_package'
                '.roff'                   = 'application/x-troff'
                '.rpm'                    = 'audio/x-pn-realaudio-plugin'
                '.rqy'                    = 'text/x-ms-rqy'
                '.rtf'                    = 'application/rtf'
                '.rtx'                    = 'text/richtext'
                '.rvt'                    = 'application/octet-stream'
                '.ruleset'                = 'application/xml'
                '.s'                      = 'text/plain'
                '.safariextz'             = 'application/x-safari-safariextz'
                '.scd'                    = 'application/x-msschedule'
                '.scr'                    = 'text/plain'
                '.sct'                    = 'text/scriptlet'
                '.sd2'                    = 'audio/x-sd2'
                '.sdp'                    = 'application/sdp'
                '.sea'                    = 'application/octet-stream'
                '.searchconnector-ms'     = 'application/windows-search-connector+xml'
                '.setpay'                 = 'application/set-payment-initiation'
                '.setreg'                 = 'application/set-registration-initiation'
                '.settings'               = 'application/xml'
                '.sgimb'                  = 'application/x-sgimb'
                '.sgml'                   = 'text/sgml'
                '.sh'                     = 'application/x-sh'
                '.shar'                   = 'application/x-shar'
                '.shtml'                  = 'text/html'
                '.sit'                    = 'application/x-stuffit'
                '.sitemap'                = 'application/xml'
                '.skin'                   = 'application/xml'
                '.skp'                    = 'application/x-koan'
                '.sldm'                   = 'application/vnd.ms-powerpoint.slide.macroEnabled.12'
                '.sldx'                   = 'application/vnd.openxmlformats-officedocument.presentationml.slide'
                '.slk'                    = 'application/vnd.ms-excel'
                '.sln'                    = 'text/plain'
                '.slupkg-ms'              = 'application/x-ms-license'
                '.smd'                    = 'audio/x-smd'
                '.smi'                    = 'application/octet-stream'
                '.smx'                    = 'audio/x-smd'
                '.smz'                    = 'audio/x-smd'
                '.snd'                    = 'audio/basic'
                '.snippet'                = 'application/xml'
                '.snp'                    = 'application/octet-stream'
                '.sol'                    = 'text/plain'
                '.sor'                    = 'text/plain'
                '.spc'                    = 'application/x-pkcs7-certificates'
                '.spl'                    = 'application/futuresplash'
                '.spx'                    = 'audio/ogg'
                '.src'                    = 'application/x-wais-source'
                '.srf'                    = 'text/plain'
                '.ssisdeploymentmanifest' = 'application/xml'
                '.ssm'                    = 'application/streamingmedia'
                '.sst'                    = 'application/vnd.ms-pki.certstore'
                '.stl'                    = 'application/vnd.ms-pki.stl'
                '.sv4cpio'                = 'application/x-sv4cpio'
                '.sv4crc'                 = 'application/x-sv4crc'
                '.svc'                    = 'application/xml'
                '.svg'                    = 'image/svg+xml'
                '.swf'                    = 'application/x-shockwave-flash'
                '.step'                   = 'application/step'
                '.stp'                    = 'application/step'
                '.t'                      = 'application/x-troff'
                '.tar'                    = 'application/x-tar'
                '.tcl'                    = 'application/x-tcl'
                '.testrunconfig'          = 'application/xml'
                '.testsettings'           = 'application/xml'
                '.tex'                    = 'application/x-tex'
                '.texi'                   = 'application/x-texinfo'
                '.texinfo'                = 'application/x-texinfo'
                '.tgz'                    = 'application/x-compressed'
                '.thmx'                   = 'application/vnd.ms-officetheme'
                '.thn'                    = 'application/octet-stream'
                '.tif'                    = 'image/tiff'
                '.tiff'                   = 'image/tiff'
                '.tlh'                    = 'text/plain'
                '.tli'                    = 'text/plain'
                '.toc'                    = 'application/octet-stream'
                '.tr'                     = 'application/x-troff'
                '.trm'                    = 'application/x-msterminal'
                '.trx'                    = 'application/xml'
                '.ts'                     = 'video/vnd.dlna.mpeg-tts'
                '.tsv'                    = 'text/tab-separated-values'
                '.ttf'                    = 'application/font-sfnt'
                '.tts'                    = 'video/vnd.dlna.mpeg-tts'
                '.txt'                    = 'text/plain'
                '.u32'                    = 'application/octet-stream'
                '.uls'                    = 'text/iuls'
                '.user'                   = 'text/plain'
                '.ustar'                  = 'application/x-ustar'
                '.vb'                     = 'text/plain'
                '.vbdproj'                = 'text/plain'
                '.vbk'                    = 'video/mpeg'
                '.vbproj'                 = 'text/plain'
                '.vbs'                    = 'text/vbscript'
                '.vcf'                    = 'text/x-vcard'
                '.vcproj'                 = 'application/xml'
                '.vcs'                    = 'text/plain'
                '.vcxproj'                = 'application/xml'
                '.vddproj'                = 'text/plain'
                '.vdp'                    = 'text/plain'
                '.vdproj'                 = 'text/plain'
                '.vdx'                    = 'application/vnd.ms-visio.viewer'
                '.vml'                    = 'application/xml'
                '.vscontent'              = 'application/xml'
                '.vsct'                   = 'application/xml'
                '.vsd'                    = 'application/vnd.visio'
                '.vsi'                    = 'application/ms-vsi'
                '.vsix'                   = 'application/vsix'
                '.vsixlangpack'           = 'application/xml'
                '.vsixmanifest'           = 'application/xml'
                '.vsmdi'                  = 'application/xml'
                '.vspscc'                 = 'text/plain'
                '.vss'                    = 'application/vnd.visio'
                '.vsscc'                  = 'text/plain'
                '.vssettings'             = 'application/xml'
                '.vssscc'                 = 'text/plain'
                '.vst'                    = 'application/vnd.visio'
                '.vstemplate'             = 'application/xml'
                '.vsto'                   = 'application/x-ms-vsto'
                '.vsw'                    = 'application/vnd.visio'
                '.vsx'                    = 'application/vnd.visio'
                '.vtx'                    = 'application/vnd.visio'
                '.wasm'                   = 'application/wasm'
                '.wav'                    = 'audio/wav'
                '.wave'                   = 'audio/wav'
                '.wax'                    = 'audio/x-ms-wax'
                '.wbk'                    = 'application/msword'
                '.wbmp'                   = 'image/vnd.wap.wbmp'
                '.wcm'                    = 'application/vnd.ms-works'
                '.wdb'                    = 'application/vnd.ms-works'
                '.wdp'                    = 'image/vnd.ms-photo'
                '.webarchive'             = 'application/x-safari-webarchive'
                '.webm'                   = 'video/webm'
                '.webp'                   = 'image/webp'
                '.webtest'                = 'application/xml'
                '.wiq'                    = 'application/xml'
                '.wiz'                    = 'application/msword'
                '.wks'                    = 'application/vnd.ms-works'
                '.wlmp'                   = 'application/wlmoviemaker'
                '.wlpginstall'            = 'application/x-wlpg-detect'
                '.wlpginstall3'           = 'application/x-wlpg3-detect'
                '.wm'                     = 'video/x-ms-wm'
                '.wma'                    = 'audio/x-ms-wma'
                '.wmd'                    = 'application/x-ms-wmd'
                '.wmf'                    = 'application/x-msmetafile'
                '.wml'                    = 'text/vnd.wap.wml'
                '.wmlc'                   = 'application/vnd.wap.wmlc'
                '.wmls'                   = 'text/vnd.wap.wmlscript'
                '.wmlsc'                  = 'application/vnd.wap.wmlscriptc'
                '.wmp'                    = 'video/x-ms-wmp'
                '.wmv'                    = 'video/x-ms-wmv'
                '.wmx'                    = 'video/x-ms-wmx'
                '.wmz'                    = 'application/x-ms-wmz'
                '.woff'                   = 'application/font-woff'
                '.woff2'                  = 'application/font-woff2'
                '.wpl'                    = 'application/vnd.ms-wpl'
                '.wps'                    = 'application/vnd.ms-works'
                '.wri'                    = 'application/x-mswrite'
                '.wrl'                    = 'x-world/x-vrml'
                '.wrz'                    = 'x-world/x-vrml'
                '.wsc'                    = 'text/scriptlet'
                '.wsdl'                   = 'application/xml'
                '.wvx'                    = 'video/x-ms-wvx'
                '.x'                      = 'application/directx'
                '.xaf'                    = 'x-world/x-vrml'
                '.xaml'                   = 'application/xaml+xml'
                '.xap'                    = 'application/x-silverlight-app'
                '.xbap'                   = 'application/x-ms-xbap'
                '.xbm'                    = 'image/x-xbitmap'
                '.xdr'                    = 'text/plain'
                '.xht'                    = 'application/xhtml+xml'
                '.xhtml'                  = 'application/xhtml+xml'
                '.xla'                    = 'application/vnd.ms-excel'
                '.xlam'                   = 'application/vnd.ms-excel.addin.macroEnabled.12'
                '.xlc'                    = 'application/vnd.ms-excel'
                '.xld'                    = 'application/vnd.ms-excel'
                '.xlk'                    = 'application/vnd.ms-excel'
                '.xll'                    = 'application/vnd.ms-excel'
                '.xlm'                    = 'application/vnd.ms-excel'
                '.xls'                    = 'application/vnd.ms-excel'
                '.xlsb'                   = 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'
                '.xlsm'                   = 'application/vnd.ms-excel.sheet.macroEnabled.12'
                '.xlsx'                   = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
                '.xlt'                    = 'application/vnd.ms-excel'
                '.xltm'                   = 'application/vnd.ms-excel.template.macroEnabled.12'
                '.xltx'                   = 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'
                '.xlw'                    = 'application/vnd.ms-excel'
                '.xml'                    = 'application/xml'
                '.xmp'                    = 'application/octet-stream'
                '.xmta'                   = 'application/xml'
                '.xof'                    = 'x-world/x-vrml'
                '.xoml'                   = 'text/plain'
                '.xpm'                    = 'image/x-xpixmap'
                '.xps'                    = 'application/vnd.ms-xpsdocument'
                '.xrm-ms'                 = 'application/xml'
                '.xsc'                    = 'application/xml'
                '.xsd'                    = 'application/xml'
                '.xsf'                    = 'application/xml'
                '.xsl'                    = 'application/xml'
                '.xslt'                   = 'application/xml'
                '.xsn'                    = 'application/octet-stream'
                '.xss'                    = 'application/xml'
                '.xspf'                   = 'application/xspf+xml'
                '.xtp'                    = 'application/octet-stream'
                '.xwd'                    = 'image/x-xwindowdump'
                '.yaml'                   = 'application/yaml'
                '.yml'                    = 'application/yaml'
                '.z'                      = 'application/x-compress'
                '.zip'                    = 'application/zip'
            } }
        It 'Returns correct content type for <_>' -ForEach ($types.Keys) {
            Get-PodeContentType -Extension $_ | Should -Be $types[$_]

        }

    }
}

Describe 'Get-PodeStatusDescription' {
    It 'Returns no description for no StatusCode' {
        Get-PodeStatusDescription | Should -Be ([string]::Empty)
    }

    It 'Returns no description for unknown StatusCode' {
        Get-PodeStatusDescription -StatusCode 9001 | Should -Be ([string]::Empty)
    }

    It 'Returns description for StatusCode' {
        Get-PodeStatusDescription -StatusCode 404 | Should -Be 'Not Found'
    }

    It 'Returns description for first StatusCode' {
        Get-PodeStatusDescription -StatusCode 100 | Should -Be 'Continue'
    }

    It 'Returns description for last StatusCode' {
        Get-PodeStatusDescription -StatusCode 526 | Should -Be 'Invalid SSL Certificate'
    }
    Context 'All Extension Loop' {
        BeforeAll {
            $codes = @{
                '100' = 'Continue'
                '101' = 'Switching Protocols'
                '102' = 'Processing'
                '103' = 'Early Hints'
                '200' = 'OK'
                '201' = 'Created'
                '202' = 'Accepted'
                '203' = 'Non-Authoritative Information'
                '204' = 'No Content'
                '205' = 'Reset Content'
                '206' = 'Partial Content'
                '207' = 'Multi-Status'
                '208' = 'Already Reported'
                '226' = 'IM Used'
                '300' = 'Multiple Choices'
                '301' = 'Moved Permanently'
                '302' = 'Found'
                '303' = 'See Other'
                '304' = 'Not Modified'
                '305' = 'Use Proxy'
                '306' = 'Switch Proxy'
                '307' = 'Temporary Redirect'
                '308' = 'Permanent Redirect'
                '400' = 'Bad Request'
                '401' = 'Unauthorized'
                '402' = 'Payment Required'
                '403' = 'Forbidden'
                '404' = 'Not Found'
                '405' = 'Method Not Allowed'
                '406' = 'Not Acceptable'
                '407' = 'Proxy Authentication Required'
                '408' = 'Request Timeout'
                '409' = 'Conflict'
                '410' = 'Gone'
                '411' = 'Length Required'
                '412' = 'Precondition Failed'
                '413' = 'Payload Too Large'
                '414' = 'URI Too Long'
                '415' = 'Unsupported Media Type'
                '416' = 'Range Not Satisfiable'
                '417' = 'Expectation Failed'
                '418' = "I'm a Teapot"
                '419' = 'Page Expired'
                '420' = 'Enhance Your Calm'
                '421' = 'Misdirected Request'
                '422' = 'Unprocessable Entity'
                '423' = 'Locked'
                '424' = 'Failed Dependency'
                '426' = 'Upgrade Required'
                '428' = 'Precondition Required'
                '429' = 'Too Many Requests'
                '431' = 'Request Header Fields Too Large'
                '440' = 'Login Time-out'
                '450' = 'Blocked by Windows Parental Controls'
                '451' = 'Unavailable For Legal Reasons'
                '500' = 'Internal Server Error'
                '501' = 'Not Implemented'
                '502' = 'Bad Gateway'
                '503' = 'Service Unavailable'
                '504' = 'Gateway Timeout'
                '505' = 'HTTP Version Not Supported'
                '506' = 'Variant Also Negotiates'
                '507' = 'Insufficient Storage'
                '508' = 'Loop Detected'
                '510' = 'Not Extended'
                '511' = 'Network Authentication Required'
                '526' = 'Invalid SSL Certificate'
            } }
        BeforeDiscovery {
            $codes = @{
                '100' = 'Continue'
                '101' = 'Switching Protocols'
                '102' = 'Processing'
                '103' = 'Early Hints'
                '200' = 'OK'
                '201' = 'Created'
                '202' = 'Accepted'
                '203' = 'Non-Authoritative Information'
                '204' = 'No Content'
                '205' = 'Reset Content'
                '206' = 'Partial Content'
                '207' = 'Multi-Status'
                '208' = 'Already Reported'
                '226' = 'IM Used'
                '300' = 'Multiple Choices'
                '301' = 'Moved Permanently'
                '302' = 'Found'
                '303' = 'See Other'
                '304' = 'Not Modified'
                '305' = 'Use Proxy'
                '306' = 'Switch Proxy'
                '307' = 'Temporary Redirect'
                '308' = 'Permanent Redirect'
                '400' = 'Bad Request'
                '401' = 'Unauthorized'
                '402' = 'Payment Required'
                '403' = 'Forbidden'
                '404' = 'Not Found'
                '405' = 'Method Not Allowed'
                '406' = 'Not Acceptable'
                '407' = 'Proxy Authentication Required'
                '408' = 'Request Timeout'
                '409' = 'Conflict'
                '410' = 'Gone'
                '411' = 'Length Required'
                '412' = 'Precondition Failed'
                '413' = 'Payload Too Large'
                '414' = 'URI Too Long'
                '415' = 'Unsupported Media Type'
                '416' = 'Range Not Satisfiable'
                '417' = 'Expectation Failed'
                '418' = "I'm a Teapot"
                '419' = 'Page Expired'
                '420' = 'Enhance Your Calm'
                '421' = 'Misdirected Request'
                '422' = 'Unprocessable Entity'
                '423' = 'Locked'
                '424' = 'Failed Dependency'
                '426' = 'Upgrade Required'
                '428' = 'Precondition Required'
                '429' = 'Too Many Requests'
                '431' = 'Request Header Fields Too Large'
                '440' = 'Login Time-out'
                '450' = 'Blocked by Windows Parental Controls'
                '451' = 'Unavailable For Legal Reasons'
                '500' = 'Internal Server Error'
                '501' = 'Not Implemented'
                '502' = 'Bad Gateway'
                '503' = 'Service Unavailable'
                '504' = 'Gateway Timeout'
                '505' = 'HTTP Version Not Supported'
                '506' = 'Variant Also Negotiates'
                '507' = 'Insufficient Storage'
                '508' = 'Loop Detected'
                '510' = 'Not Extended'
                '511' = 'Network Authentication Required'
                '526' = 'Invalid SSL Certificate'
            } }
        It  'Returns description for the <_> StatusCode'  -ForEach ($codes.Keys) {
            Get-PodeStatusDescription -StatusCode $_ | Should -Be $codes[$_]
        }

    }
}